﻿using System.Windows;
using System.Windows.Controls;
using LiveTiss.Schemas;
using LiveTiss.Classes;
using System.Collections.Generic;

namespace LiveTiss.Guias
{
    public partial class GuiaSP_SADTReapresentacao : UserControl
    {
        #region Guia

        public static readonly DependencyProperty GuiaProperty = DependencyProperty.Register("Guia",
            typeof(ct_guiaSP_SADTReapresentacao), typeof(GuiaSP_SADTReapresentacao), new PropertyMetadata(null));

        public ct_guiaSP_SADTReapresentacao Guia
        {
            get { return (ct_guiaSP_SADTReapresentacao)GetValue(GuiaProperty); }
            set { SetValue(GuiaProperty, value); }
        }

        #endregion

        public GuiaSP_SADTReapresentacao()
        {
            this.DataContext = this;

            #region Guia
            if (this.Guia == null)
            {
                this.Guia = new ct_guiaSP_SADTReapresentacao()
                {
                    caraterAtendimento = st_eletivaEmergencia.E,
                    dadosAutorizacao = new ct_autorizacaoGuia()
                    {
                        dataAutorizacao = Util.EmptyDate,
                        dataAutorizacaoSpecified = false,
                        senhaAutorizacao = string.Empty,
                        validadeSenha = Util.EmptyDate,
                        validadeSenhaSpecified = false
                    },
                    dadosBeneficiario = new ct_beneficiario()
                    {
                        identificadorBeneficiario = new byte[] { },
                        nomeBeneficiario = string.Empty,
                        nomePlano = string.Empty,
                        numeroCarteira = string.Empty,
                        numeroCNS = string.Empty,
                        validadeCarteira = Util.EmptyDate,
                        validadeCarteiraSpecified = false
                    },
                    dadosSolicitante = new ct_solicitante()
                    {
                        contratado = new ct_contratadoSolicitante()
                        {
                            enderecoContratado = new ct_endereco()
                            {
                                cep = string.Empty,
                                codigoIBGEMunicipio = string.Empty,
                                codigoUF = st_UF.AC,
                                complemento = string.Empty,
                                logradouro = string.Empty,
                                municipio = string.Empty,
                                numero = string.Empty,
                                tipoLogradouro = st_tipoLogradouro.Item001
                            },
                            identificacao = new ct_identificacaoPrestador()
                            {
                                ItemValue = string.Empty,
                                ItemElementName = ItemChoiceType2.CNPJ
                            },
                            nomeContratado = string.Empty,
                            numeroCNES = string.Empty
                        },
                        profissional = new ct_identificacaoProfissional()
                        {
                            cbos = st_CBOS.Item000000,
                            cbosSpecified = false,
                            conselhoProfissional = new ct_conselhoProfissional()
                            {
                                numeroConselho = string.Empty,
                                siglaConselho = st_conselhoProfissional.COREN,
                                ufConselho = st_UF.AC
                            },
                            nomeProfissional = string.Empty
                        }
                    },
                    dataHoraAtendimento = Util.EmptyDate,
                    dataHoraAtendimentoSpecified = false,
                    diagnosticoAtendimento = new ct_diagnosticoAtendimento()
                    {
                        CID = new ct_diagnostico()
                        {
                            codigoDiagnostico = string.Empty,
                            descricaoDiagnostico = string.Empty,
                            nomeTabela = st_tabelasDiagnostico.CID10
                        },
                        indicadorAcidente = st_indicadorAcidente.Item0,
                        indicadorAcidenteSpecified = false,
                        tempoReferidoEvolucaoDoenca = new ct_tempoEvolucaoDoenca()
                        {
                            unidadeTempo = st_unidadeTempo.A,
                            valor = string.Empty
                        },
                        tipoDoenca = st_tipoDoenca.A,
                        tipoDoencaSpecified = false,
                    },
                    identificacaoGuiaSADTSP = new ct_cabecalhoGuia()
                    {
                        numeroGuiaOperadora = string.Empty,
                        numeroGuiaPrestador = string.Empty,
                        dataEmissaoGuia = Util.EmptyDate,
                        identificacaoFontePagadora = new ct_cabecalhoGuiaIdentificacaoFontePagadora()
                        {
                            ItemValue = string.Empty,
                            ItemElementName = ItemChoiceType1.cnpjFontePagadora,
                        }
                    },
                    indicacaoClinica = string.Empty,
                    numeroGuiaPrincipal = string.Empty,
                    observacao = string.Empty,
                    OPMUtilizada = new ct_OPMUtilizadasRevisao()
                    {
                        OPMUtilizada = new List<ct_OPMUtilizadasRevisaoOPM>(),
                        valorTotalOPM = 0,
                        valorTotalOPMSpecified = true
                    },
                    outrasDespesas = new ct_outrasDespesasRevisao()
                    {
                        itensDespesas = new List<ct_outrasDespesasRevisaoItensDespesas>(),
                        totalGeralOutrasDespesas = 0,
                        totalGeralOutrasDespesasSpecified = true
                    },
                    prestadorExecutante = new ct_guiaSP_SADTReapresentacaoPrestadorExecutante()
                    {
                        enderecoContratado = new ct_endereco()
                        {
                            cep = string.Empty,
                            codigoIBGEMunicipio = string.Empty,
                            codigoUF = st_UF.AC,
                            complemento = string.Empty,
                            logradouro = string.Empty,
                            municipio = string.Empty,
                            numero = string.Empty,
                            tipoLogradouro = st_tipoLogradouro.Item001
                        },
                        identificacao = new ct_identificacaoPrestadorExecutante()
                        {
                            ItemValue = string.Empty,
                            ItemElementName = ItemChoiceType.CNPJ
                        },
                        nomeContratado = string.Empty,
                        numeroCNES = string.Empty,
                        profissionalExecutanteCompl = new ct_guiaSP_SADTReapresentacaoPrestadorExecutanteProfissionalExecutanteCompl()
                        {
                            codigoCBOS = st_CBOS.Item000000,
                            codigoCBOSSpecified = false,
                            codigoProfissionalCompl = new ct_identificacaoProfissionalCompl()
                            {
                                ItemValue = string.Empty,
                                ItemElementName = ItemChoiceType3.codigoPrestadorNaOperadora
                            },
                            conselhoProfissional = new ct_conselhoProfissional()
                            {
                                numeroConselho = string.Empty,
                                siglaConselho = st_conselhoProfissional.COREN,
                                ufConselho = st_UF.AC
                            },
                            nomeExecutante = string.Empty
                        },
                    },
                    procedimentosRealizados = new List<ct_procedimentoRevisaoProcedimentosRevisao>(new ct_procedimentoRevisaoProcedimentosRevisao[]
                        {
                            new ct_procedimentoRevisaoProcedimentosRevisao()
                            {
                                data = Util.EmptyDate,
                                horaFim = Util.EmptyDate,
                                horaFimSpecified = false,
                                horaInicio = Util.EmptyDate,
                                horaInicioSpecified = false,
                                procedimento = new ct_tabela()
                                {
                                    codigo = string.Empty,
                                    descricao = string.Empty,
                                    tipoTabela = st_tabela.Item00
                                },
                                quantidadeRealizada = 0,//max 7 digitos, 4 casas decimais
                                reducaoAcrescimo = 0,//max 5 digitos, 2 casas decimais
                                reducaoAcrescimoSpecified =true,
                                tecnicaUtilizada = st_tecnicaUtilizada.C,
                                tecnicaUtilizadaSpecified  = true,
                                valor = 0,//10 digitos,2 casas decimais
                                valorSpecified = true,
                                valorTotal = 0,//10 digitos,2 casas decimais
                                valorTotalSpecified = true,
                                viaAcesso = st_viaDeAcesso.D,
                                viaAcessoSpecified = true,
                                justificativaRevisao = string.Empty
                            }
                        }),
                    tipoAtendimento = st_tipoAtendimento.Item01,
                    tipoSaida = st_tipoSaidaGuiaSADT.Item1,
                    valorTotal = new ct_valorTotalServicos()
                    {
                        diarias = 0,
                        diariasSpecified = true,
                        gases = 0,
                        gasesSpecified = true,
                        materiais = 0,
                        materiaisSpecified = true,
                        medicamentos = 0,
                        medicamentosSpecified = true,
                        servicosExecutados = 0,
                        servicosExecutadosSpecified = true,
                        taxas = 0,
                        taxasSpecified = true,
                        totalGeral = 0,
                        totalGeralSpecified = true
                    }
                };
            }
            #endregion

            InitializeComponent();
        }
    }
}
